// Vue2 写法
import Vue from 'vue'
// 导入Xuex模块
import Vuex from 'vuex'

Vue.use(Vuex)
// 通过构造函数创建一个对象

// 导出对象
export default new Vuex.Store({
    state: {
        msg: "我是vuex的数据"
    },  //状态(数据)
    // Vuex中的数据不能直接修改，只能通过mutations方法提交修改
    // mutations中的方法不能被外部调用，只能内部提交
    mutations: {
        SET_STATE_ARR(state, data) {
            state.arr = data
            console.log(state,"mutations函数中使用")
        },
        SET_STATE_USERINFO(state, data) {
            state.userInfo = data
        }
    },   
    actions: {
        setState({ commit }) {
            commit('SET_STATE_ARR',['new_arr'])
        },
        Login({commit}, userForm) {
            return new Promise((resolve,reject) => {
                api.login(userForm).then(res => {
                    if(res.data.code == 200) {
                        commit('',res.data.userinfo)
                        localStorage('userInfo',res)
                    }
                })
            })
        }
    },    // 书写函数，可以被调用，提交数据
    modules: {},    // 可以用来vuex嵌套
    getters: {
        getState: (state) => {
            return state  
        }
    }     // 书写函数，获取state的数据
})

// Vue3的写法
// import {createStore} from 'vuex'
// const store = createStore({
//     state: {},  //状态(数据)
//     mutations: {},  // Vuex中的数据不能直接修改，只能通过mutations方法提交修改
//     actions: {},
//     modules: {},
//     getters: {}
// })
// export default store